package com.cskaoyan.javase.oop3._1interface._2sumup;

/**
 * 总结一下,Java代码中extends关键字和implements关键字的使用
 * 1.extends 表示继承(重点)
 *  在Java中,继承是不能跨越"种族"的
 *  类与类之间继承,是单继承的
 *  接口和接口之间继承,会得到所有接口的抽象方法,接口是多继承的
 *
 * 2.实现（implements），必须发现在类与接口之间，接口和类是没有任何关系的。
 *      而且是类实现接口
 *      如果接口的实现类是一个普通类,那么需要实现抽象方法
 *      如果接口的实现类是一个抽象类,那么不需要需要强制实现抽象方法
 *          可以选择实现
 *
 * 扩展:
 *      1.某个类实现了接口,接口可以看成它的"父类"
 *      但是接口没有构造器
 *      那么这个类中的子类对象初始化super(参数)指向谁?
 *          如果该类有声明直接父类,那么就指向这个直接父类
 *          如果没有,那就指向Object
 *
 *      2.接口不是类,那么它有没有继承Object?
 *      实际上接口是继承Object的
 *      考虑这个问题 实际意义不大
 *      因为引用指向对象,任何对象的类型必然实现Object
 *
 *
 * @since 17:08
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        IA ia;
    }
}
abstract class BaseA implements IA{
    public BaseA() {
    }
}
class B{}
class A  extends B implements IA{

    public A() {
    }

    @Override
    public void test() {

    }

    @Override
    public void test2() {

    }
}
interface IA extends IB, IC {
}

interface IB {
    void test();
}

interface IC {
    void test2();
}